package 每日签到;

/**
 * @author 陈艺博
 * @date 2021-03-01 22:48
 * @description https://leetcode-cn.com/problems/range-sum-query-immutable/
 **/
public class _303_range_sum_query_immutable_区域和检索 {
    private int[] sums;

    public _303_range_sum_query_immutable_区域和检索(int[] nums) {
        int n = nums.length;

        // 不满足条件
        if (n == 0) {
            return;
        }

        // 存放sum的数组
        sums = new int[n];

        // 0位置特殊
        sums[0] = nums[0];

        // 将累加和，放在对应位置上
        for (int i = 1; i < n; i++) {
            sums[i] += sums[i - 1] + nums[i];
        }
    }

    public int sumRange(int i, int j) {
        // 不满足条件
        if (i < 0 || i > j) {
            return 0;
        }

        // 零直接返回j位置上的累加和
        if (i == 0) {
            return sums[j];
        } else {// 用j位置上的和，减去i-1位置前的多余数字之和
            return sums[j] - sums[i - 1];
        }
    }
}
